test(ske/starterkit): smoke test the deployed SKE StarterKit - #11
Merged
Conversation
The e2e smoke test unit added next needs the same hub ref the deployment uses, and terragrunt can only share that through an included file. No behaviour change: the ref and draft flag are unchanged, and `module` is new but only read by e2e/. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
meshcloud/meshstack-hub#304 makes ske/ske-starterkit/e2e usable in foundation mode. The e2e unit sources the hub at the deployed ref, so the deployment has to move first. NOTE: pins the PR branch head. Re-pin to the squashed main commit before merge. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The starter kit is what trial users actually try, and the chain behind it is long: meshProjects, SKE tenants, a Forgejo repository, a pipeline run and a cert-manager certificate. Nothing here verified that the deployed definition still produces a working app. Add an e2e unit next to the deployment: it sources the hub e2e module at the deployed ref and runs it in foundation mode, so it orders an ephemeral building block against the BBD this unit deployed rather than building its own. The hub test then asserts both app endpoints answer 200 over a valid, cert-manager-issued certificate. Run it with `terragrunt test` in e2e/, after `source setup-env.sh`. Each run consumes a Let's Encrypt certificate for a fresh hostname, which is a rate-limited quota — so run it deliberately, not on a tight schedule. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
JohannesRudolph
force-pushed
the
claude/ske-starterkit-smoke-test
branch
2 times, most recently
from
September 8, 2026 19:04
356d030 to
860d9e4
Compare
This repo had no agent instructions at all, so every convention it shares with likvid-cloudfoundation had to be rediscovered here — or restated in comments, which is how the e2e units ended up explaining the hub protocol to themselves. Rather than fork that documentation, say what actually differs — a different meshStack (try.meshstack.io), its own Vault secret, no CI — and link the public likvid repo for the rest. CLAUDE.md is a symlink, matching likvid. Also records the one credential quirk worth knowing: the `ske` units read the meshStack API key *id* from the environment, where the rest of this repo and all of likvid commit it. A key id is not a secret, so that is inconsistency rather than intent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… deployment's state The e2e unit took `bbd_version_ref` from `dependency.deployment.outputs.e2e`, so terragrunt had to evaluate the deployment unit to read it — dragging in that unit's STACKIT credentials, its state backend and the whole dependency graph for one uuid. Reading that state is also more access than a smoke test should have: it holds the kubeconfig and the Forgejo and Harbor secrets. The hub's foundation mode now finds the definition through the meshStack API itself (meshcloud/meshstack-hub#304), so this unit only spells out the static facts it needs: workspace, `bbd_draft` and a fresh name suffix. Running the smoke test is down to `MESHSTACK_STARTER_KIT_API_KEY_ID` and `_SECRET` — nothing else. `smoke.hcl` holds what every smoke test in this foundation shares. This repo has no CI, so nothing discovers it yet; when CI arrives, likvid-cloudfoundation's `smoke-test.yml` selects exactly the units that include it, so cloning that workflow is the whole job. `starterkit/outputs.tf` goes with the dependency it existed to feed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
JohannesRudolph
force-pushed
the
claude/ske-starterkit-smoke-test
branch
from
September 8, 2026 19:18
860d9e4 to
f05416c
Compare
JohannesRudolph
marked this pull request as ready for review
September 8, 2026 19:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Smoke tests the SKE StarterKit as this foundation has published it: an ephemeral building block
ordered against the deployed definition, asserting the run SUCCEEDED and that both app endpoints
answer HTTP 200 over a valid, cert-manager-issued certificate.
The precedent is
likvid-cloudfoundation; the companion PR there islikvid-bank/likvid-cloudfoundation#215.
Builds on meshcloud/meshstack-hub#304, now merged — the hub ref pinned here is
247a4a6aonhub
main, so this PR stands on its own.Why the StarterKit
It is what trial users actually try, and the chain behind it is long: two meshProjects, two SKE
tenants, a Forgejo repository, a pipeline run, and a cert-manager certificate. A hub-side test
proves a fresh deployment works. Nothing proved that the definition this foundation has
deployed still produces an app that serves traffic.
What
Five commits, smallest first:
refactor— move the hub coordinates out ofterragrunt.hclintohub.hcl, so the deploymentand the e2e unit share one ref. No behaviour change.
chore— bump that ref to the hub commit that makesske/ske-starterkit/e2edual-mode. Thisredeploys the three BBDs at the newer hub ref.
test— addstarterkit/e2e/and thee2eoutput it reads.docs— addAGENTS.md(+CLAUDE.mdsymlink). See below.test— drop that output again, and the state dependency behind it. See below.Running it needs the meshStack API key and nothing else
Commits 3 and 4 are worth reading as a pair. The e2e unit originally took
bbd_version_reffromdependency.deployment.outputs.e2e, and terragrunt has to evaluate the deployment unit to readthat — dragging in its STACKIT credentials, its state backend and the whole dependency graph for one
uuid. Reading that state is also more access than a smoke test should have: it holds the SKE
kubeconfig and the Forgejo and Harbor secrets.
The hub's foundation mode now finds the published definition through the meshStack API itself, so
the unit only spells out static facts: workspace,
bbd_draftand a fresh name suffix. Nodependency, no state, no cloud credential.
python3must be on PATH for the endpoint probe.AGENTS.md, and why it earns its place in this PRThis repo had no agent instructions at all, which is how the e2e units ended up explaining the hub
e2e protocol to themselves in comments.
AGENTS.mdlinks the publiclikvid-cloudfoundation for the shared
conventions and states only what actually differs here — a different meshStack, its own Vault
secret, no CI.
CLAUDE.mdis a symlink to it, matching likvid. The e2e comments are then trimmed topointers.
It also records a credential quirk worth knowing:
setup-env.shexports every key inconcourse/meshstack-dev/trial-cloudfoundation, and theskeunits read the meshStack API keyid from
MESHSTACK_STARTER_KIT_API_KEY_IDrather than committing it. The rest of this repo (andall of likvid) commits the id and takes only the secret from the environment. A key id is not a
secret, so this is inconsistency rather than intent — worth aligning one day, but not while it is
load-bearing for three units.
Frequency
This repo has no CI, so the test is run on demand — but that is now a much smaller gap than it was:
foundations/meshstack-trial/smoke.hclholds the shared scaffolding and is the markerlikvid-cloudfoundation's
.github/workflows/smoke-test.ymldiscovers smoke tests by, so cloningthat workflow when this repo gets CI is the whole job, with no per-case wiring.
Keeping it on demand for now is also deliberate: each run consumes a Let's Encrypt certificate for a
fresh hostname, a rate-limited quota — the same reason this case is nightly-only rather than hourly
in
meshcloud/meshstack-smoke-test.Verification
Config-only.
terragrunt hcl fmt --checkandtofu fmt -checkpass, andterragrunt renderon thee2e unit reports
dependencies: nullwith{"mode":"foundation","workspace":"meshcloud","bbd_draft":false,"name_suffix":…}— resolved with nocredentials beyond two dummy env vars.
terragrunt initat the pinned hub ref installsmodes/foundationonly. The live run is still outstanding — it needs the real API key pair.🤖 Generated with Claude Code